package com.nameless.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nameless.entity.Car;
import com.nameless.entity.Coupon;
import com.nameless.entity.CouponHistory;
import com.nameless.vo.CouponHistoryVo;
import com.nameless.vo.Result;

import java.util.List;
import java.util.Map;

/**
 * -*- coding:utf-8 -*-
 *
 * @author 太阳偷渡青山
 * @software IntelliJ IDEA
 * @date 2023/02/27 21:15
 * @Description
 */
public interface CouponHistoryService extends IService<CouponHistory> {

    /**
     * 列表
     *
     * @param queryWrapper 查询包装
     * @return {@link List}<{@link CouponHistory}>
     */
    @Override
    List<CouponHistory> list(Wrapper<CouponHistory> queryWrapper);

    /**
     * 页面名称
     *
     * @param pageNo   页面没有
     * @param pageSize 页面大小
     * @param history  历史
     * @return {@link Page}<{@link CouponHistory}>
     */
    Page<CouponHistory> pageByNames(Integer pageNo, Integer pageSize, CouponHistory history);

    /**
     * 主动获得优惠券
     *
     * @param couponId 优惠券id
     * @return {@link Result}
     */
    Result<String> toReceiveCoupon(Long couponId);

    /**
     * 后台赠送
     *
     * @param couponHistoryVo 优惠券历史签证官
     * @return {@link Result}
     */
    Result<String> saveBycouponHistoryVo(CouponHistoryVo couponHistoryVo);

    /**
     * 使用优惠券
     *
     * @param couponId 优惠券id
     * @param orderSn  订单sn
     * @return {@link Result}<{@link String}>
     */
    Result<String> useCoupon(Long couponId , String orderSn);

    /**
     * 被客户机id优惠券
     *
     * @param car 车
     * @return {@link Map}<{@link String}, {@link Coupon}>
     */
    Map<String,List<Coupon>> getCouponByClientId(Car car);
}
